package com.wtb.javatool.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wtb.javatool.entity.Catalog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface CatalogMapper extends BaseMapper<Catalog> {
    // 查询帮区特定学校所有目录
    List<Catalog> getCatalogByBandId(@Param("bandId") Long bandId, @Param("schoolId") Long schoolId);

    // 查询帮区特定学校的所有数量
    Long getCatalogCountByBandId(@Param("bandId") Long bandId, @Param("schoolId") Long schoolId);

    //查询帮区特定学校中空目录数量
    Long getEmptyCatalogCountByBandId(@Param("bandId") Long bandId, @Param("schoolId") Long schoolId);

    //查询帮区特定学校中的所有文档数量
    Long getAssetCountByBandId(@Param("bandId") Long bandId, @Param("schoolId") Long schoolId);

    // 根据ID查询目录
    Catalog getById(@Param("id") Long id);

    // 根据父ID查询子目录
    List<Catalog> getByParentId(@Param("parentId") Long parentId);

    // 根据level查询目录
    List<Catalog> getByLevel(@Param("level") Integer level);

    // 根据父目录ID递归获取所有子目录
    List<Catalog> getAllByParentId(@Param("parentId") Long parentId);

    //根据父目录ID递归获取所有子目录数量
    Long getAllCountByParentId(@Param("parentId") Long parentId);

    //根据父目录ID递归获取所有子目录的所有文档数量
    Long getAllAssetCountByParentId(@Param("parentId") Long parentId);

    //根据父目录ID递归计算空目录的数量
    Long getEmptyAssetCountByParentId(@Param("parentId") Long parentId);

    // 插入目录
    int insert(Catalog catalog);

    // 更新目录
    int update(Catalog catalog);

    // 删除目录
    int delete(@Param("id") Long id);

    // 批量根据Id删除目录
    int deleteMany(@Param("ids") List<Long> ids);


}